package com.itheima.api.collection.demo04;

import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;

/**
 * 使用forEach方法进行遍历
 */
public class CollectionDemo01 {

    public static void main(String[] args) {

        // 1. 使用多态的形式去创建Collection集合对象
        Collection<String> col = new ArrayList<String>() ;

        // 2. 添加元素
        col.add("hello") ;
        col.add("world") ;
        col.add("java") ;

        // 3. 使用forEach方法进行遍历
        // public interface Collection<E> extends Iterable<E> {...}
        // 因此是可以使用Iterable中的方法
        // 调用这个forEach方法的时候我们需要为其传递一个实现了Consumer这个接口的子类对象；我们可不可以使用匿名内部类？可以
        col.forEach(new Consumer<String>() {

            @Override
            public void accept(String s) {
                System.out.println(s);
            }

        });

        /**
         * 想知道原理，就需要去查看源码
         * default void forEach(Consumer<? super T> action) {
         *         Objects.requireNonNull(action);
         *         for (T t : this) {
         *             action.accept(t);
         *      }
         *  }
         */


        System.out.println("----------------------------------------------");

        col.forEach((String s) -> {
            System.out.println(s);
        });

        System.out.println("----------------------------------------------");

        col.forEach(s -> System.out.println(s));

    }

}
